package com.path.planning.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.locationtech.jts.geom.Point;

/**
 * 路径规划请求实体
 */
@ApiModel(description = "路径规划请求")
public class RoutingRequest {

    @ApiModelProperty(value = "起点坐标", required = true)
    private Point startPoint;

    @ApiModelProperty(value = "终点坐标", required = true)
    private Point endPoint;

    @ApiModelProperty(value = "国家代码", required = true)
    private String countryCode;

    @ApiModelProperty(value = "最大搜索距离（米）", example = "50000")
    private Double maxDistance = 50000.0;

    @ApiModelProperty(value = "搜索半径（米）", example = "1000")
    private Double searchRadius = 1000.0;

    @ApiModelProperty(value = "是否返回详细路径信息", example = "true")
    private Boolean includeDetails = true;

    // 构造函数
    public RoutingRequest() {}

    public RoutingRequest(Point startPoint, Point endPoint, String countryCode) {
        this.startPoint = startPoint;
        this.endPoint = endPoint;
        this.countryCode = countryCode;
    }

    // Getter和Setter方法
    public Point getStartPoint() {
        return startPoint;
    }

    public void setStartPoint(Point startPoint) {
        this.startPoint = startPoint;
    }

    public Point getEndPoint() {
        return endPoint;
    }

    public void setEndPoint(Point endPoint) {
        this.endPoint = endPoint;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public Double getMaxDistance() {
        return maxDistance;
    }

    public void setMaxDistance(Double maxDistance) {
        this.maxDistance = maxDistance;
    }

    public Double getSearchRadius() {
        return searchRadius;
    }

    public void setSearchRadius(Double searchRadius) {
        this.searchRadius = searchRadius;
    }

    public Boolean getIncludeDetails() {
        return includeDetails;
    }

    public void setIncludeDetails(Boolean includeDetails) {
        this.includeDetails = includeDetails;
    }

    @Override
    public String toString() {
        return "RoutingRequest{" +
                "startPoint=" + startPoint +
                ", endPoint=" + endPoint +
                ", countryCode='" + countryCode + '\'' +
                ", maxDistance=" + maxDistance +
                ", searchRadius=" + searchRadius +
                ", includeDetails=" + includeDetails +
                '}';
    }
}
